Arduino实现32分频音频频谱显示器 – Arduino 实验室

您所在的位置:网站首页 arduino 参考电压 Arduino实现32分频音频频谱显示器 – Arduino 实验室

Arduino实现32分频音频频谱显示器 – Arduino 实验室

2022-06-14 00:14| 来源: 网络整理| 查看: 265

Arduino实现32分频音频频谱显示器

2019年3月28日 admin 未分类 0

MAKER:Shajeeb/译:趣无尽 Cherry(转载请注明出处) 该项目通过 Arduino 和四块点阵屏,实现32分频的音频(音乐)频谱可视化显示。 这里用了大量篇幅对其原理做了解释(初学者理解起来开可能稍有难度),并且提供了完整的原理图和源代码。如果你喜欢直观地观赏音乐随着声音跳舞的话,可以一试! 往期精彩内容还有《用 Arduino DIY 假唱机器人+卖萌表情包》。

材料清单

Arduino Nano R3 × 1 电阻10k欧 × 1 电阻4.75k欧 × 3 电容100nF × 2 电阻100K欧 × 2 轻触开关12mm × 1 LED显示器32X8 × 1 5V电源(用于USB供电) × 1

主要特点

1、使用易于安装的库 arduinoFFT 和 MD_MAX72xx。 2、支持五种不同的显示模式,可通过按钮切换。 3、音频信号的左右声道都是混合的,不会错过任何节拍。 4、原型使用 32×8 LED 点阵,你可以随意改变。 5、音频可以从耳机输入或播放设备的Line-Out输入。

项目流程图

原理图

系统原理描述

Arduino 板(ATmega328P)内置模数转换器(ADC),可以将输入音频信号转换为数字样本。 ADC 设置为采样时钟频率为 38.46khz 的输入信号。这是通过将 ADC 预分频器配置为32分频来实现的。采样频率为 38.64Khz 这就意味着数字样本可以高达19.32Kz(奈奎斯特定理)的输入频率,对于音频信号来说非常好的。

为了显示音频信号的频谱,左右声道混合在一起并反馈到 ADC 的 A0 模拟输入。你可以使用一分多的音频线将信号同时馈送到频谱分析仪和另一个放大器上(如果有必要的)。

ADC 设置为使用外部参考电压。在这个项目中,参考电压来自 Arduino 板上的 3.3v 稳压电源。当模拟信号在零电压附近震荡时,我们需要在 ADC 的模拟输入端配置一个直流偏置。这可以确保 ADC 输出不会截断输入信号的负周期。相同的 3.3v 稳定电压由两个电阻 R1 和 R2 分压,然后反馈到模拟输入以进行直流偏置。使用此直流偏置,即使输入信号断开,ADC 也会在输出中产生 512 。稍后在代码中这个 512 将由 DC 偏置抹掉,从而读数代表实际的输入信号的变化。

ArduinoFFT 库是将输入模拟信号转换为频谱的核心代码。这个库易于使用,而且输出非常的准确。 原型配置为生成 64 个样本,并使用这些样本进行 FFT 。 ArduinoFFT 库可以对 16 到 128 之间的样本进行 FFT ,在程序中进行配置。但arduinoFFT库对 128 个样本的计算速度慢,因此我坚持最高值为 64 个,这样效果最好。

本项目使用的显示为32列×8行 LED 矩阵。 MD_MAX72xx 库使显示控制部件非常容易。该库提供打开/关闭该程序中正在使用的任意数量的 LED 功能。每个频带的幅度被映射在 0 到 8 之间,这取决于每个列中的 LED 接通的数量。

该程序提供五种显示模式,你可以轻松修改或创建不同的模式。这个项目中使用按钮来切换模式。

频率响应

实验证明,系统能够响应高达18.6Khz 的频率。

有关此项目的更多信息,请访问我的 GitHub :https://github.com/shajeebtm/Arduino-audio-spectrum-visualizer-analyzer/

连接输入

你可以通过多种方式将音频输入到频谱显示仪。你可以从音乐播放器/功放的 Line-Out 输入。 其他选项是从手机/音乐系统的耳机输出获取音频。 我不建议使用另一个麦克风接收音频,因为信号水平和频率响应将包含许多的因素。

以下是将音乐播放器/功放连接到频谱显示仪的示例图。 以下是将手机的耳机输出连接到频谱显示仪的示例图。 将电缆连接到耳机输出时,手机/音乐系统不会出声。 如果你想听到音频并可显示,你必须分离音频并使用另一个功放。

代码 /* Copyright (c) 2019 Shajeeb TM Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #define SAMPLES 64 //Must be a power of 2 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // Set display type so that MD_MAX72xx library treets it properly #define MAX_DEVICES 4 // Total number display modules #define CLK_PIN 13 // Clock pin to communicate with display #define DATA_PIN 11 // Data pin to communicate with display #define CS_PIN 10 // Control pin to communicate with display #define xres 32 // Total number of columns in the display, must be


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3